Skip to content

office X2: expose bounded XLSX outline/get/text/query#172

Merged
bobzhang merged 150 commits into
mainfrom
agent/office-x2-xlsx-read
Jul 19, 2026
Merged

office X2: expose bounded XLSX outline/get/text/query#172
bobzhang merged 150 commits into
mainfrom
agent/office-x2-xlsx-read

Conversation

@bobzhang

Copy link
Copy Markdown
Collaborator

Closes #161

What changed

  • dispatch office outline|get|text|query across validated DOCX and XLSX packages
  • add stable, name-keyed XLSX selectors and versioned human/JSON output contracts
  • bound package reads, cell scans, metadata, formatting work, predicates, and output
  • preserve formulas, cached-value presence, effective inherited styles, links, tables, charts, images, slicers, and defined names
  • resolve ISO Strict and Transitional relationship dialects
  • resolve relocated workbook and child parts from their actual source parts, including case-insensitive physical part lookup
  • translate shared-formula followers with Excel A1 copy semantics, including absolute axes, ranges, whole rows/columns, external references, and unquoted 3-D sheet qualifiers
  • retain root-relationship workbook paths when the main content type is declared through <Default>
  • document the canonical XLSX read surface and CI coverage

Why

The canonical Office CLI previously exposed structured DOCX reads but did not provide equivalent bounded XLSX outline/get/text/query behavior. This closes that read-only parity gap while keeping one validated archive, deterministic selectors, explicit resource ceilings, and native/Wasm behavior.

Validation

  • moon check --target native
  • moon check --target wasm
  • moon test --target native: 4912/4912
  • moon test --target wasm: 4259/4259
  • targeted native XLSX: 1121/1121
  • targeted Wasm XLSX: 1093/1093
  • targeted native/Wasm Office: 66/66 each
  • native CLI build for XLSX, DOCX, Office, and PDF executables
  • Office Cram: 101/101
  • moon info && moon fmt
  • git diff --check

Review gate

A fresh ephemeral gpt-5.6-sol Ultra review (session 019f6e62-fd62-7630-acd0-69a7478d98dd) found two P2 issues: unquoted 3-D shared-formula qualifiers and default-declared relocated workbook paths. Both are fixed in 8329a5ab with direct native/Wasm regressions.

A required brand-new post-fix review was attempted at Ultra (session 019f6ea5-7034-73f0-bca7-eaad02ae0385) and Max (session 019f6ea5-c0b5-7281-a974-028b3d68508b), but the Codex account rejected both before review due to its usage limit. Keep this PR in draft and do not merge until a fresh post-fix Codex CLI review completes cleanly.

@bobzhang
bobzhang marked this pull request as ready for review July 19, 2026 11:01
@bobzhang
bobzhang merged commit 9969aa6 into main Jul 19, 2026
4 checks passed
bobzhang added a commit that referenced this pull request Jul 19, 2026
PR #172 switched drawing hyperlink resolution to
parse_external_relationship_targets only, so internal-mode hyperlink
relationships - which this library's own writer emits for location
links like "Sheet1!B2" - were dropped on read: the picture came back
with an empty hyperlink and HyperlinkType::Unset. The regression was
caught on main by the #177 round-trip test (merged concurrently, so
neither PR's CI saw the interaction).

Resolve both modes: external-mode targets keep HyperlinkType::External;
a miss falls back to internal-mode targets as HyperlinkType::Location.

Fixes the main-branch CI failure in
xlsx/drawing_readback_roundtrip_test.mbt on native and wasm.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

office X2: expose bounded XLSX outline/get/text/query

1 participant